home *** CD-ROM | disk | FTP | other *** search
/ New Star Software Collection / NSS_Collection.iso / 3-189 super show & tell 11 / 2.ima / SSTBASE.MS_ / SSTBASE.MS
Encoding:
Text File  |  1993-08-05  |  7.6 KB  |  272 lines

  1. ''**************************************************************************
  2. ''*                       SST Setup Script...
  3. ''**************************************************************************
  4.  
  5. ''*** DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8.  
  9. '$INCLUDE 'msdetect.inc'
  10.  
  11. DECLARE FUNCTION InstallCarousel LIB "MSCUISTF.dll" ( DestDir$ ) AS INTEGER 
  12.  
  13. ''Dialog ID's
  14. CONST WELCOME       = 100
  15. CONST ASKQUIT       = 200
  16. CONST DESTPATH      = 300
  17. CONST EXITFAILURE   = 400
  18. CONST EXITQUIT      = 600
  19. CONST EXITSUCCESS   = 700
  20. CONST OPTIONS       = 800
  21. CONST APPHELP       = 900
  22. CONST BADPATH       = 6400
  23. '' @Update Me Total Size Requirements
  24.  
  25. ''Bitmap ID
  26. CONST LOGO = 1
  27.  
  28. GLOBAL DEST$        ''Default destination directory.
  29. GLOBAL OPTCUR$      ''Option selection from option dialog.
  30. GLOBAL FreeSpace&
  31. GLOBAL WinDir$        '' Stores Windows Directory
  32.  
  33. DECLARE SUB Install
  34. DECLARE SUB UpdateINIfiles
  35. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  36.  
  37.  
  38. INIT:
  39.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  40.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  41.  
  42.     SetBitmap CUIDLL$, LOGO
  43.     SetTitle "SST Setup"
  44.     Temp$ = "Version 1.0 Pre-Release" + CHR$(13) + "Copyright (C) 1993, Innovative Communication Systems, Inc."
  45.     SetAbout "Super Show & Tell", TEMP$
  46.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  47.     IF szInf$ = "" THEN
  48.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SSTINF.INF"
  49.     END IF
  50.     ReadInfFile szInf$
  51.  
  52.     OPTCUR$ = "1"
  53. ''    DEST$ = "C:\SSTV1"
  54.     @Update Me Default Destination
  55.  
  56. '$IFDEF DEBUG
  57.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  58.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  59.     IF IsDriveValid(WinDrive$) = 0 THEN
  60.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  61.         GOTO QUIT
  62.     END IF
  63. '$ENDIF ''DEBUG
  64.  
  65.  
  66. WELCOME:
  67.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  68.     IF sz$ = "CONTINUE" THEN
  69.         UIPop 1
  70.     ELSE
  71.         GOSUB ASKQUIT
  72.         GOTO WELCOME
  73.     END IF
  74.  
  75. ISWINDOWS31:
  76.     wVerMinor% = GetWindowsMinorVersion()
  77.  
  78.     IF wVerMinor% < 1 THEN 
  79.         i% = DoMsgBox("This program requires Windows 3.1", "Setup Message", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  80.         GOTO QUIT
  81.     END IF
  82.  
  83. GETPATH:
  84.     SetSymbolValue "EditTextIn", DEST$
  85.     SetSymbolValue "EditFocus", "END"
  86. GETPATHL1:
  87.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  88.     DEST$ = GetSymbolValue("EditTextOut")
  89.  
  90.     IF sz$ = "CONTINUE" THEN
  91.         IF IsDirWritable(DEST$) = 0 THEN
  92.             GOSUB BADPATH
  93.             GOTO GETPATHL1
  94.         END IF
  95.     DESTDRIVE$ = MID$(DEST$, 1, 1)
  96.         FreeSpace& = GetFreeSpaceForDrive(DEST$) 
  97.         IF FreeSpace& < SpaceNeeded& THEN
  98.         GOSUB MORESPACE
  99.             GOTO GETPATHL1
  100.         ENDIF
  101.         UIPop 1
  102.     ELSEIF sz$ = "REACTIVATE" THEN
  103.         GOTO GETPATHL1
  104.     ELSEIF sz$ = "BACK" THEN
  105.         UIPop 1
  106.         GOTO WELCOME
  107.     ELSE
  108.         GOSUB ASKQUIT
  109.         GOTO GETPATH
  110.     END IF
  111.  
  112.     WinDir$ = GetWindowsDir()
  113.     Install
  114.  
  115.     CursorState% = ShowWaitCursor()
  116.     ErrorCode% = InstallCarousel (Dest$)      ' Our Function to re-join split files and decompress if needed
  117.     UpdateINIfiles
  118.     RestoreCUrsor CursorState%
  119.     IF ErrorCode% THEN
  120.     ELSE
  121.        GOTO QUIT
  122.     END IF
  123.  
  124.  
  125.     FileExist% = DoesFileExist(WinDir$ + "SYSTEM\AAPLAY.DLL", femExists)
  126.     IF FileExist% = 0 THEN
  127.     AutoDesk$ = GetIniKeyString( "WIN.INI", "AAPLAY Animation", "FullScreen" )
  128.     IF AutoDesk$ = "" THEN
  129.          CopyFile DEST$ + "\AAPLAY.DLL", WinDir$ + "SYSTEM\AAPLAY.DLL", cmoBackup, 0
  130.     END IF
  131.     END IF
  132.     RemoveFile DEST$ + "\AAPLAY.DLL", cmoForce
  133.  
  134.     CloseLogFile
  135.  
  136. QUIT:
  137.     ON ERROR GOTO ERRQUIT
  138.  
  139.     IF ERR = 0 THEN
  140.         dlg% = EXITSUCCESS
  141.     ELSEIF ERR = STFQUIT THEN
  142.         dlg% = EXITQUIT
  143.     ELSE
  144.         dlg% = EXITFAILURE
  145.     END IF
  146. QUITL1:
  147.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  148.     IF sz$ = "REACTIVATE" THEN
  149.         GOTO QUITL1
  150.     END IF
  151.     UIPop 1
  152.  
  153.     END
  154.  
  155. ERRQUIT:
  156.     i% = DoMsgBox("Setup sources were corrupted, call (612) 531-0603!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  157.     END
  158.  
  159.  
  160.  
  161. BADPATH:
  162.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  163.     IF sz$ = "REACTIVATE" THEN
  164.         GOTO BADPATH
  165.     END IF
  166.     UIPop 1
  167.     RETURN
  168.  
  169.  
  170. MORESPACE:
  171.     Temp$ = "SST needs " + STR$(SpaceNeeded&) + " bytes to install." + CHR$(13)
  172.     Temp$ = Temp$ + "There is only " + STR$(FreeSpace&) +" bytes free."
  173.     i% = DoMsgBox( Temp$, "Not Enough Disk Space", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  174.     RETURN
  175.  
  176.  
  177. ASKQUIT:
  178.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  179.  
  180.     IF sz$ = "EXIT" THEN
  181.         UIPopAll
  182.         ERROR STFQUIT
  183.     ELSEIF sz$ = "REACTIVATE" THEN
  184.         GOTO ASKQUIT
  185.     ELSE
  186.         UIPop 1
  187.     END IF
  188.     RETURN
  189.  
  190.  
  191.  
  192. '**
  193. '** Purpose:
  194. '**     Builds the copy list and performs all installation operations.
  195. '** Arguments:
  196. '**     none.
  197. '** Returns:
  198. '**     none.
  199. '*************************************************************************
  200. SUB Install STATIC
  201.  
  202.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  203.  
  204.     CreateDir DEST$, cmoNone
  205.     OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  206.  
  207.     WriteToLogFile ""
  208.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  209.     WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
  210.     WriteToLogFile ""
  211.  
  212.     AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  213.  
  214.     CopyFilesInCopyList
  215.  
  216. END SUB
  217.  
  218. SUB UpdateINIfiles STATIC
  219. '' Update SST's INI file with installed paths.
  220.     INIFile$ = DEST$ + "\SST.INI"
  221.     CreateIniKeyValue INIFile$, "SST", "picturedir", DEST$, cmoOverwrite
  222.     CreateIniKeyValue INIFile$, "SST", "picturetype", "1", cmoOverwrite
  223.     CreateIniKeyValue INIFile$, "SST", "sounddir", DEST$, cmoOverwrite
  224.     CreateIniKeyValue INIFile$, "SST", "soundtype", "1", cmoOverwrite
  225.     CreateIniKeyValue INIFile$, "SST", "carouseldir", DEST$, cmoOverwrite
  226.     CreateIniKeyValue INIFile$, "SST", "userselectdir", DEST$, cmoOverwrite
  227.     CreateIniKeyValue INIFile$, "SST", "altered", "0", cmoOverwrite
  228.     CreateIniKeyValue INIFile$, "SST", "moviedir", DEST$, cmoOverwrite
  229.     CreateIniKeyValue INIFile$, "SST", "movietype", "2", cmoOverwrite
  230.  
  231.  
  232. '' Add File Manager associations to WIN.INI file for Carousels.
  233. '    BackupFile WinDir$ + "WIN.INI", "WIN.OLD"
  234. '    INIFile$ = WinDir$ + "WIN.INI"
  235. '    CreateIniKeyValue INIFile$, "Extensions", "sst", DEST$ + "\SST.EXE ^.sst", cmoOverwrite
  236. '    CreateIniKeyValue INIFile$, "Extensions", "car", DEST$ + "\SST.EXE ^.car", cmoOverwrite
  237.  
  238.     @Update Me Program Group
  239.     @Update Me Show Group
  240.  
  241.     UseIcon1$ = " , 1, 1, 1," + DEST$
  242.     UseIcon2$ = " , 0, 1, 1," + DEST$
  243.     @Update Me Program Item
  244.     @Update Me Runtime Item
  245.  
  246. ''    CloseLogFile
  247. END SUB
  248.  
  249.  
  250. '**
  251. '** Purpose:
  252. '**     Appends a file name to the end of a directory path,
  253. '**     inserting a backslash character as needed.
  254. '** Arguments:
  255. '**     szDir$  - full directory path (with optional ending "\")
  256. '**     szFile$ - filename to append to directory
  257. '** Returns:
  258. '**     Resulting fully qualified path name.
  259. '*************************************************************************
  260. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  261.     IF szDir$ = "" THEN
  262.         MakePath = szFile$
  263.     ELSEIF szFile$ = "" THEN
  264.         MakePath = szDir$
  265.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  266.         MakePath = szDir$ + szFile$
  267.     ELSE
  268.         MakePath = szDir$ + "\" + szFile$
  269.     END IF
  270. END FUNCTION
  271.  
  272.